<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 解构赋值
        // ES6 允许按照一定的模式，从数组和对象中提取值，对变量进行赋值，这被称为解构赋值

        // ES5为变量赋值，只能直接指定值
        let a = 1
        let b = 2
        let c = 3

        // ES6
        let [d, e, f] = [1, 2, 3]
        console.log(a, b, c)
        // 从右侧数组中提取值，按照对应的位置，对左侧变量赋值。 注意：数组的解构有顺序

        const [max, min, avg] = [100, 60, 80]

            ;[g, h] = [11, 22]
        console.log(g, h, window.g)
        // 如果不加let const 关键字，相当于是var声明的，会成为window的属性

        // 数组的解构赋值，可以用于交换两个变量

        // ES5 引入一个temp变量
        let i = 1
        let j = 2
            // let temp = i
            // i = j
            // j = temp
            // console.log(i, j)

            // ES6 
            ;[i, j] = [j, i]
        console.log(i, j)

            // JS 中需要加分号的两种情况
            // () 立即执行函数 
            // [] 数组
            ;[1, 2, 3].forEach(el => console.log(el))
    </script>
</body>

</html>